home *** CD-ROM | disk | FTP | other *** search
- Tseng Super VGA
-
- ET3000-AX 100pin Max 512k 8/16bit databus, 32bit memory bus. Main chip
- -BX 84pin 512k 8 bit databus.
- -Bp 256k 8 bit Basic chip
- ET4000AX 144pin Max 1M 8/16 bit
- ET4000/W32 160pin Max 4MB Accelerator.
- ET4000/W32i 160pin Max 4MB Accelerator. Can interleave DRAM
- ET4000/W32p 208pin Max 4MB Accelerator, PCI support, point-point Line
- draw
-
- Note: W32x means any of W32, W32i and W32p
-
- Registers:
-
-
- *** ET3000 *****
-
- 102h: Microchannel Setup Control
- bit 0 Disable Card if set
-
- 3B8h (W): Display Mode Control Register
- bit 0 80x25. Set for 80x25 text mode, clear for 40x25 text mode
- 1 Hercules graphics mode if set, text mode else
- 3 Video enabled if set
- 5 Blink enabled if set
- 7 Graphics page 1 displayed if set, page 0 else
-
- 3BFh (R/W): Hercules Compatibility Mode
- bit 1 Enable second page (B800h-BFFFh)
- Note: to enable the Tseng 4000 extensions this register must be written with 3
- and then 3d8h must be written with A0h. To disable extensions write 29h
- to 3d8h and then 1 to this register.
- Extended registers include 3d4h index >18h, except index 33h and 35h
-
- 3C0h index 16h: Miscellaneous
- bit 0 If set disables writes to bits 0-3 of the Overscan (3C0h index 11h)
- register.
- 1 If set disables writes to Internal/External Palette RAM.
- 4 If set the Horizontal Timings (3d4gh index 0-5), CRTC Offset (3d4h
- index 13h) and Display Start Address (3d4h index 0Ch,0Dh) are doubled
- (or more correctly: the units they are specified in are doubled).
- 6 If set enables 2byte character codes
- 7 Ignore EGA internal palette if set
-
- 3C0h index 17h (R/W): Miscellaneous 1
- bit 7 If set protects the internal palette ram and redefines the attribute
- bits as follows:
- Monochrome:
- bit 0-2 Select font 0-7
- 3 If set selects blinking
- 4 If set selects underline
- 5 If set prevents the character from being displayed
- 6 If set displays the character at half intensity
- 7 If set selects reverse video
- Color:
- bit 0-1 Selects font 0-3
- 2 Foreground Blue
- 3 Foreground Green
- 4 Foreground Red
- 5 Background Blue
- 6 Background Green
- 7 Background Red
-
- 3C3h (R/W): Microchannel Video Subsystem Enable Register:
- bit 0 Enable Microchannel VGA if set
-
- 3C4h index 6 (R/W): Zoom Control
- bit 0-2 Yzoom factor 0=x1, 1: x2 .... 7: x8
- 4-6 Xzoom factor 0=x1, 1: x2 .... 7: x8
- 7 Hardware zoom enabled if set
-
- 3C4h index 7 (R/W): TS Auxiliary Mode
- bit 0 Switch Normal Window if set. Switches the normal window to text mode if
- programmed for graphics mode, and vice versa.
- 1 Switch Zoom Window if set. Switches the zoom window to text mode if
- programmed for graphics mode, and vice versa.
- 2 Switch Split Window if set. Switches the spilt window to text mode if
- programmed for graphics mode, and vice versa.
- 4 If set 8 simultaneous fonts are enabled, using bit 3,4,6 of each
- attribute byte to select the font.
- 3,5 ROM Bios Enable/Disable:
- 0 0 C000-C3FF Enabled
- 0 1 ROM disabled (-AX), C000-C5FFF (-AF)
- 1 0 C000-C5FF,C680-C7FF Enabled
- 1 1 C000-C7FF Enabled
- 6 MCLK/2 if set
- 7 VGA compatible if set, EGA if clear.
-
- 3CBh (R/W): PEL Address/Data Wd (3000/4000 ?)
-
- 3CDh (R/W): Segment Select
- bit 0-2 64k Write bank number
- 3-5 64k Read bank number
- 6-7 Segment Configuration.
- 0 128K segments
- 1 64K segments
- 2 1M linear memory
-
- 3CEh index 0Dh (R/W): Microsequencer Mode
-
- 3CEh index 0Eh (R/W): Microsequencer Reset
-
- 3d4h index 1Bh (R/W): X Zoom Start Address
- bit 0-7 Offset of Zoom window start in character clocks (8 pixels) from left
- edge. The horizontal zoom area (End - Start) should be an integral
- (positive) multipla of the horizontal zoom factor
-
- 3d4h index 1Ch (R/W): X Zoom End
- bit 0-7 Offset of Zoom window end in char clocks from left edge
-
- 3d4h index 1Dh (R/W): Y Zoom Start Address
- bit 0-7 Start line of zoom window bit 0-7
-
- 3d4h index 1Eh (R/W): Y Zoom End Address
- bit 0-7 End line of zoom window bit 0-7. This is the last line to be zoomed.
-
- 3d4h index 1Fh (R/W): Y Zoom Start and End High
- bit 0-2 End line of zoom window bit 8-10. Bits 0-7 are in index 1Eh
- 3-5 Start line of zoom window bit 8-10. Bits 0-7 are in index 1Dh
-
- 3d4h index 20h (R/W): Zoom Start Address Low
- bit 0-7 Zoom Start Address bit 0-7. Address of the data to be zoomed in the
- zoom window
-
- 3d4h index 21h (R/W): Zoom Start Address Middle
- bit 0-7 Zoom Start Address bit 8-15
-
- 3d4h index 23h (R/W): Extended start ET3000
- bit 0 Cursor start address bit 16
- 1 Display start address bit 16
- 2 Zoom start address bit 16
- 7 If set memory address 8 is output on the MBSL pin (allowing access to
- 1MB), if clear the blanking signal is output.
-
- 3d4h index 24h (R/W): Compatibility Control
- bit 0 Enable Clock Translate if set
- 1 Clock Select bit 2. Bits 0-1 are in 3C2h/3CCh.
- 2 Enable tri-state for all output pins if set
- 3 Enable input A8 of 1MB DRAMs from the INTL output if set
- 4 Reserved
- 5 Enable external ROM CRTC translation if set
- 6 Enable Double Scan and Underline Attribute if set
- 7 Enable 6845 compatibility if set.
-
- 3d4h index 25h (R/W): Overflow High
- bit 0 Vertical Blank Start bit 10
- 1 Vertical Total Start bit 10
- 2 Vertical Display End bit 10
- 3 Vertical Sync Start bit 10
- 4 Line Compare bit 10
- 5-6 Reserved
- 7 Vertical Interlace if set
-
- 3D8h (W): Mode Control register
- bit 0 80x25 Alpha mode if set, 40x25 else
- 1 Graphics mode if set, alpha else.
- 2 BW mode if set, color else
- 3 Video Enable. Enable video signal if set
- 4 640x200 Graphics mode if set, 320x200 else
- 5 if set bit 7 of the attribute controls background, else blink
-
- 3D9h (W): Color Select Register
- The function of this register depends on the active mode.
- Text modes: 320x200 modes: 640x200 mode:
- Bit 0 Blue border Blue background Blue ForeGround
- 1 Green border Green background Green ForeGround
- 2 Red border Red background Red ForeGround
- 3 Bright border Bright background Bright ForeGround
- 4 Backgr. color Alt. intens. colors Alt. intens colors
- 5 No func. Selects palette
- Palette 0 is Green, red and brown,
- Palette 1 is Cyan, magenta and white.
-
- 3dAh (W): Feature Control Register
- bit 5 (R) Hercules Compatibility Register (3BFh) bit 1
- 7 Enable NMI generation if set
- Note: Read at 3CAh, Written at 3dAh
- Note: Bits 0,1 and 3 are standard EGA/VGA
-
- 3DEh (W); AT&T Mode Control Register
- bit 0 Set to double scanlines (200 -> 400)
- 2 Alternate Font Select.
- 3 Alternate Page Select. If bit 0 is clear, selects the 16KB page to
- display from
- 6 Underline Color Attribute. If set text with underline attribute is
- shown with the white underline, if clear it is shown in blue
- foreground color
- Note: To update this register the system must be in color mode (3CCh bit 0
- set) and 3d4h index 34h bits 6 and 7 must be set as follows:
- bit 0 3d4h index 34h bits 7 must be set
- 2,3 3d4h index 34h bits 7 must be set
- 6 3d4h index 34h bits 6 must be set
-
-
-
-
- *** Tseng ET4000AX and ET4000/W32 variants
-
- 102h: Microchannel Setup Control
- bit 0 Disable Card if set
-
- 3BFh (R/W): Hercules Compatibility Mode
- bit 1 Enable second page (B800h-BFFFh)
- Note: to enable the Tseng 4000 extensions this register must be written with 3
- and then 3d8h must be written with A0h. To disable extensions write 29h
- to 3d8h and then 1 to this register.
- Extended registers include 3d4h index >18h, except index 33h and 35h
-
- 3C0h index 16h: Miscellaneous
- bit 0 If set disables writes to bits 0-3 of the Overscan (3C0h index 11h)
- register.
- 1 If set disables writes to Internal/External Palette RAM.
- 4,5 (4000) High resolution timings.
- 0: Normal powerup mode
- 2: Hiresolution 256color mode
- 3: 15/16 bit HiColor mode (bytes on rising AND falling edge
- of the dot clock)
- (W32x) High Resolution /color mode
- 0: Normal 8bits/clock
- 2: 16bits per clock (HiColor)
- 6 If set enables 2byte character codes
- 7 Ignore EGA internal palette if set
-
- 3C0h index 17h (R/W): Miscellaneous 1
- bit 7 If set protects the internal palette RAM and redefines the attribute
- bits as follows:
- Monochrome:
- bit 0-2 Select font 0-7
- 3 If set selects blinking
- 4 If set selects underline
- 5 If set prevents the character from being displayed
- 6 If set displays the character at half intensity
- 7 If set selects reverse video
- Color:
- bit 0-1 Selects font 0-3
- 2 Foreground Blue
- 3 Foreground Green
- 4 Foreground Red
- 5 Background Blue
- 6 Background Green
- 7 Background Red
-
- 3C3h (R/W): Microchannel Video Subsystem Enable Register:
- bit 0 Enable Microchannel VGA if set
-
- 3C4h index 6 (R/W): TS State Control
- bit 1-2 Font Width Select in dots/character
- If 3C4h index 4 bit 0 clear:
- 0: 9 dots, 1: 10 dots, 2: 12 dots, 3: 6 dots
- If 3C4h index 5 bit 0 set:
- 0: 8 dots, 1: 11 dots, 2: 7 dots, 3: 16 dots
- Only valid if 3d4h index 34h bit 3 set.
-
- 3C4h index 7 (R/W): TS Auxiliary Mode
- bit 0 Selects MCLK/4 as video clock if set (bit 6 must be set)
- 1 Selects SCLK=MCLK
- 2 (4000) Always 1
- 2,4 (W32x) CRTC Horizontal Scale Factor. The number of times each pixel is
- replicated horizontally. 0: x8, 1: x4, 2: x2, 3: x8
- 3,5 ROM Bios Enable/Disable:
- 0 0 C000-C3FF Enabled
- 0 1 ROM disabled
- 1 0 C000-C5FF,C680-C7FF Enabled
- 1 1 C000-C7FF Enabled
- 6 MCLK/2 if set and bit 0 is 0
- 7 VGA compatible if set, EGA if clear.
-
- 3CBh (R/W): PEL Address/Data Wd (3000/4000 ?)
-
- 3CBh (R/W): Extended bank register (W32 only)
- bit 0-1 Write bank bit 4-5. The lower 4 bits are in 3CDh bit 0-3.
- 4-5 Read bank bit 4-5. The lower 4 bits are in 3CDh bit 4-7.
-
- 3CDh (R/W): Segment Select
- bit 0-3 64k Write bank number (0..15)
- 4-7 64k Read bank number (0..15)
-
- 3CEh index 0Dh (R/W): Microsequencer Mode
-
- 3CEh index 0Eh (R/W): Microsequencer Reset
-
- 3d4h index 30h (R/W): (W32x ?)
- bit 0-? Linear Frame Buffer Address in units of 4Mb
-
- 3d4h index 31h (R/W): General Purpose
- bit 0-3 Scratch pad
- 3 (W32p?) 1280x1024 frequency: 0: 43Hz i-lace, 1: 60Hz
- 6-7 Clock Select bits 3-4. Bits 0-1 are in 3C2h/3CCh bits 2-3.
-
- 3d4h index 32h (R/W): RAS/CAS Configuration
- bit 0-1 CAS low Pulse Width (Tcsw). The CAS low pulse width in SCLK cycles.
- For graphics modes and the CAS0,CAS1 signals in text mode the period
- is 2 SCLK cycles if this value is 1, 1 SCLK cycle if not.
- For the CAS2 and CAS3 signals in text mode the period is:
- 0: 1 SCLK cycle, 1: 2, 2: 3, 3: 4
- 2 CAS Pre-charge Time (Tcsp). The CAS high pulse width is 1 SCLK cycle
- if clear, 2 if set
- 3-4 RAS Pre-charge Time (Trsp). The RAS high pulse width in SCLK cycles
- 0: 2 SCLK cycles, 1: 3, 2: 4, 3: 5
- 5 Recharge time (Trcd). If set Trcd is 3 SCLK cycles, if clear only 2
- 6 RAL RAS & CAS Column Setup Time (Tral).
- 7 (W32i/p) Set if using interleaved memory.
-
- 3d4h index 33h (R/W): Extended start Address
- bit 0-1 (4000) Display Start Address bits 16-17
- 2-3 (4000) Cursor start address bits 16-17
- Can be used to ID ET4000
- 0-3 (W32x) Display Start Address bits 16-19. Bits 0-15 are in 3d4h index
- 0Ch,0Dh
- 4-7 (W32x) Cursor Start Address bits 16-19. Bits 0-15 are in 3d4h index
- 0Eh,0Fh
- Note: This register can be accessed whether or not the extensions are enabled
-
- 3d4h index 34h (R/W): 6845 Compatibility Control Register
- bit 0 Enable CS0 (alternate clock timing)
- 1 Clock Select bit 2. Bits 0-1 in 3C2h bits 2-3, bits 3-4 are in 3d4h
- index 31h bits 6-7
- 2 Tristate ET4000 bus and color outputs if set
- 3 Video Subsystem Enable Register at 46E8h if set, at 3C3h if clear.
- 4 Enable Translation ROM for reading CRTC and MISCOUT if set
- 5 Enable Translation ROM for writing CRTC and MISCOUT if set
- 6 Enable double scan in AT&T compatibility mode if set
- 7 Enable 6845 compatibility if set
-
- 3d4h index 35h (R/W): Overflow High
- bit 0 Vertical Blank Start Bit 10 (3d4h index 15h).
- 1 Vertical Total Bit 10 (3d4h index 6).
- 2 Vertical Display End Bit 10 (3d4h index 12h).
- 3 Vertical Sync Start Bit 10 (3d4h index 10h).
- 4 Line Compare Bit 10 (3d4h index 18h).
- 5 Gen-Lock Enabled if set (External sync)
- 6 (4000) Read/Modify/Write Enabled if set. Currently not implemented.
- (W32x) If set selects the CRTCB or Sprite registers as the source
- for Vertical Retrace Interrupts, if clear selects the
- standard CRTC registers
- 7 Vertical interlace if set. The Vertical timing registers are
- programmed as if the mode was non-interlaced!!
-
- 3d4h index 36h (R/W): Video System Configuration 1
- bit 0-2 Refresh count. Number (-1) of refreshes per display line
- 3 (4000) 16 bit wide fonts if set, else 8 bit wide
- (W32x) If set enables the Memory Management buffers
- 4 Linear addressing if set
- (4000) Video Memory is mapped as a 1 Meg block above 1MB.
- (W32x) Video Memory is mapped as a 4MB block
- 5 ? Enable Tseng Addressing Mode
- (W32x) If set enables Memory Mapped registers. Three MMU areas
- exist. All accesses to these areas will be translated by the MMU
- to find the resulting address in display memory (or if the access
- is to the Accelerator data buffers). The translation happens by
- adding the offset into the MMU area to the MMU base address.
- In the standard VGA graphics modes (A0000h-AFFFFh VGA buffer) the
- area B8000h-B9FFFh is MMU area 0, BA000h-BBFFFh is MMU area 1 and
- BC000h-BDFFFh is MMU area 2.
- 6 16 bit data path (video memory) if set
- 7 16 bit data (I/O operations) if set
- Note: Access to video memory, the MMU buffers and the Memory Mapped registers
- are controlled by bits 3-5, 3CEh index 6 bits 2-3 (MAP) and whether the
- IMA port is enabled:
- Bits MMU
- 3 5 4 MAP VGA mem MMU 0-2 Size Mem. Regs
- 0 0 0 0 A0000h- BFFFFh
- 0 0 0 1 A0000h- AFFFFh
- 0 0 0 2 B0000h- B7FFFh
- 0 0 0 3 B8000h- BFFFFh
- 1 0 0 0 A0000h- BFFFFh
- 1 0 0 1 A0000h- AFFFFh B8000h- BDFFFh 8K
- 1 0 0 2 B0000h- B7FFFh A8000h- ADFFFh 8K
- 1 0 0 3 B8000h- BFFFFh A8000h- ADFFFh 8K
- 1 1 0 0 A0000h- BFFFFh
- 1 1 0 1 A0000h- AFFFFh B8000h- BDFFFh 8K BFF00h- BFFFFh
- 1 1 0 2 B0000h- B7FFFh A8000h- ADFFFh 8K AFF00h- AFFFFh
- 1 1 0 3 B8000h- BFFFFh A8000h- ADFFFh 8K AFF00h- AFFFFh
-
- IMA port enabled:
- 0 0 1 0 00000h-0FFFFFh
- 1 1 1 0 00000h-07FFFFh 080000h-0DFFFFh 128K 0FFF00h-0FFFFFh
-
- IMA port not enabled
- 0 0 1 0 00000h-3FFFFFh
- 1 1 1 0 00000h-1FFFFFh 200000h-37FFFFh 512K 3FFF00h-3FFFFFh
- Note: If Memory Mapped Registers are enabled (bit 5 set) The addresses
- following the last MMU aperture appears to be mapped to "External Mapped
- Registers". The size of this area is half the MMU size, I.e for the
- standard VGA graphics mode (A0000h-AFFFFh VGA buffer) the External
- Mapped Registers would be in the area: BE000h-BEFFFh
-
- 3d4h index 37h (R/W): Video System Configuration 2
- bit 0-1 (4000) Bus width (VGA chip to video memory):
- 1: 8 bit, 2: 16 bit, 3: 32 bit.
- 0 (W32x) Bus Width (VGA chip to video memory) 0: 16bit, 1: 32bit
- 2 (4000) Bus Read Latch control (0: Delay one clock before latching)
- (W32x) If set the CAS signals are output on the CAS0-3 pins and the
- Write Enable signals are output on the MWA and MWB pins.
- If clear this is reversed.
- 3 (4000) Size of RAM chips. 0: 64Kx, 1: 256Kx
- (W32x) Size of RAM chips. 0: 1Mx, 1: 256Kx (or 512Kx)
- RAM size is (Chip size 64k/256k/1M) * (Bus Width 1/2/4 bytes)
- For W32i/p multiply with 2 if interleaved (index 32h bit 7 set).
- Note: Probably doesn't work for 512Kx DRAMs
- 4 16 bit ROM access if set, if clear 32bit in Local Bus systems, 8bit
- for ISA and MicroChannel systems.
- 5 Priority Threshold Control. If clear increases the Memory bandwidth
- but also increases the response time.
- 6 Enable test mode if set, should be clear
- 7 (4000) VRAM installed if set, DRAM if clear.
-
- 3d4h index 3Fh (R/W):
- bit 0 Bit 8 of the Horizontal Total (3d4h index 0)
- 2 Bit 8 of the Horizontal Blank Start (3d4h index 3)
- 4 Bit 8 of the Horizontal Retrace Start (3d4h index 4)
- 7 Bit 8 of the CRTC offset register (3d4h index 13h).
-
- 3DEh (W); AT&T Mode Control Register
- bit 0 Set to double scanlines (200 -> 400)
- 2 Alternate Font Select
- 3 Alternate Page Select. If bit 0 is clear, selects the 16KB page to
- display from
- 6 Underline Color Attribute. If set text with underline attribute is
- shown with the white underline, if clear it is shown in blue
- foreground color
- Note: To update this register the system must be in color mode (3CCh bit 0
- set) and 3d4h index 34h bits 6 and 7 must be set as follows:
- bit 0 3d4h index 34h bits 7 must be set
- 2,3 3d4h index 34h bits 7 must be set
- 6 3d4h index 34h bits 6 must be set
-
- 3d8h (R/W): Display Mode Control
-
-
-
- **** The memory mapped registers and index registers at 21xAh are only
- present on the ET4000/W32 series chips, not on the ET3000 and ET4000s ****
-
- 21xAh index E0h W(R/W): CRTCB/Sprite Horizontal Pixel Position
- bit 0-11 The X position of the HardWare Cursor/CRTCB window in pixels from
- the left edge of the display
- Note: The CRTCB/Sprite&IMA registers are at index 21xAh, where x is 0..7.
- The index used by the chip is determined on powerup by the powerup/down
- resistors tied to pin IOD0-2. All systems I have seen uses 217Ah.
- Note: The E0h-EFh indexes holds either the CRTCB or the Sprite (Cursor)
- parameters depending on index EFh bit 0
-
- 21xAh index E2h W(R/W): CRTCB Width/Sprite Horizontal Preset
- bit 0-11 (CRTCB) The width in pixels (-1) of the CRTCB window
- 0-5 (Sprite) The pixel number (from the left) within the 64x64 cursor
- bitmap of the first used pixel. The last pixel displayed is the 63th
- pixel in the bitmap.
-
- 21xAh index E4h W(R/W): CRTCB/Sprite Vertical Pixel Position
- bit 0-11 The Vertical position of the CRTCB Window/Sprite (Cursor) in
- scanlines from the top of the display
-
- 21xAh index E6h W(R/W): CRTCB Height/Sprite Vertical Preset
- bit 0-11 (CRTCB) The height in scanlines (-1) of the CRTCB window
- 0-5 (Sprite) The pixel number (from the top) within the 64x64 cursor
- bitmap of the first used pixel. The last line displayed is line 63
- of the bitmap.
-
- 21xAh index E8 3(R/W): CRTCB/Sprite Starting Address
- bit 0-19 The address in Video Memory of the start of the CRTCB/Sprite
- (Cursor) BitMap.
- In bytes in planar modes, and in DWORDs in packed modes.
- Note: The sprite data is a 64x64 2bit bitmap
- 0: Sprite Color 0
- 1: Sprite Color 1
- 2: Transparent
-
- 21xAh index EBh W(R/W): CRTCB/Sprite Row Offset
- bit 0-11 Width of the each CRTCB/Sprite (Cursor) scanline. Should be 4 for
- Sprite data. For the CRTCB window it is in bytes in planar modes and
- DWORDs in packed modes
- 12-15 (R) Chip version. 0: W32, 1: W32i revA, 2: W32p revA, 3: W32i revB,
- 5: W32p revB, 6: W32p revD, 7: W32p rev C, 11: W32i rev C
-
- 21xAh index EDh (R/W): CRTCB Pixel Panning
- bit 0-2 Number of pixels to shift the CRTCB data left
-
- 21xAh index EEh (R/W): CRTCB Color Depth
- bit 0-3 The color depth (bits/pixel) of the CRTCB window data
- 0: 1bit/pixel, 1: 2b/p, 2: 4b/p, 3: 8b/p, 4: 16b/p
- 4-5 CRTCB Horizontal Zoom Factor. 0: x1, 1: x2, 2: x3, 3: x4
- 6-7 CRTCB Vertical Zoom Factor. 0: x1, 1: x2, 2: x3, 3: x4
-
- 21xAh index EFh (R/W): CRTCB/Sprite Control
- bit 0 If set selects the CRTCB window, if clear selects the Sprite
- 1 If set the CRTCB/Sprite is overlayed on the screen data, if clear it
- is output on the SP0-1 pins
- 2 Sprite Size. 0: 64x64, 1: 128x128
- Note: 21xAh index F7h bit 7 must be set to enable the CRTCB window or the
- Sprite (Cursor).
-
- 21xAh index F0h 3(R/W): Image Starting Address
- bit 0-19 Image port Storage address. In bytes in planar modes and in DWORDs
- in packed modes. The data input from the IMA port is stored at this
- address, starting anew for each frame
-
- 21xAh index F3h W(R/W): Image Transfer Length
- bit 0-11 The number of DWORDs to transfer per scan line
-
- 21xAh index F5h W(R/W): Image Row Offset
- bit 0-11 The number of DWORDs from the start of one scanline to the start of
- the next scan line.
-
- 21xAh index F7h (R/W): Image Port Control
- bit 0 Set to enable the Image Port
- 1 Set to enable odd/even interlace transfers, clear for linear
- transfers
- 7 Set to enable the CRTCB window or the HardWare Cursor (Sprite).
-
- 46E8h (R): Video Subsystem Enable Register
- bit 3 Enable VGA if set
-
-
- M+00h D(R/W): MMU Memory Base Pointer Register 0
- bit 0-21 The address in display memory where MMU Aperture 0 starts in bytes
-
- M+04h D(R/W): MMU Memory Base Pointer Register 1
- bit 0-21 The address in display memory where MMU Aperture 1 starts in bytes
-
- M+08h D(R/W): MMU Memory Base Pointer Register 2
- bit 0-21 The address in display memory where MMU Aperture 2 starts in bytes
-
- M+13h (R/W): MMU Control Register
- bit 0 If set accesses via MMU Aperture 0 go to the Accelerator registers
- 1 If set accesses via MMU Aperture 1 go to the Accelerator registers
- 2 If set accesses via MMU Aperture 2 go to the Accelerator registers
- 4 If set the memory accessed via MMU Aperture 0 is organised linearly
- (As if 3C4h index 2 bits 0-3 = 0Fh, 3C4h index 4 bit 3 = 1, 3CEh
- index 1 bits 0-3 = 0, 3CEh index 3 bits 0-4 = 0, 3CEh index 5 bits
- 0-1 and 3 = 0, 3CEh index 6 bit 1 = 0 and 3CEh index 8 = 0FFh),
- if clear the memory is organised according to the current display
- mode
- 5 Same as bit 4, but for MMU Aperture 1
- 6 Same as bit 4, but for MMU Aperture 2
-
- M+30h (R/W): ACL Suspend/Terminate Register
- bit 0 To suspend an Accelerator operation the programmer should set this
- bit, wait for the ACL Status Register (Memory 36h) bit 0 to clear
- and then clear this bit.
- 4 Same as bit 0, bit terminates the operation.
-
- M+31h (W): ACL Operation State Register
- bit 0 When set the contents of the Queued registers (Memory 80h-FFh) are
- transfered to the accelerators internal registers
- 3 When set a paused screen-to-screen operation is resumed.
- 4 Should be set on startup for the W32p ??
-
- M+32h (R/W): ACL Sync Enable Register
- bit 0 If set a write to a "full" queue (Ie. the queued registers are being
- transferred to the internal registers) will be delayed until the
- transfer has completed, if clear the write will be ignored. An
- interrupt can be generated in this situation.
-
- M+33h (R?): ACL Write Interface Valid Bits (W32p rev B + ?)
- bit 0
-
- M+34h (R/W): ACL Interrupt Mask Register
- bit 0 Write Interrupt Enable. If set generates an interrupt when the queue
- is next not-full (I.e. wake me when the transfer has completed).
- Clear this bit to clear the resulting interrupt.
- 1 Read Interrupt Enable.
- 2 Write Fault Interrupt Enable.
-
- M+35h (R/W): ACL Interrupt Status Register
- bit 0 (R) If set a Write Interrupt is pending
- 1 If set a Read Interrupt is pending. Set the bit to clear the
- Interrupt condition.
- 2 If set a Write Fault Interrupt is pending. Set the bit to clear the
- Interrupt condition.
-
- M+36h (R/W): ACL Accelerator Status Register
- bit 0 (R) Write Status (WRST). If set the accelerators queue is full and
- cannot accept further writes to the queued registers
- 1 (R) Read Status (RDST). If set the Accelerator is busy or the queue
- is not empty
- 2 XY Status (XYST). If set the Accelerator is processing an X/Y block,
- I.e. the internal XPOS/YPOS have not yet stabilised. When a
- suspended operation is restored this bit must also be restored
- 3 (R) Screen-to Screen Status (SSO). Set if the current Accelerator
- operation is screen-to-screen. This bit is only valid if bit 2 is
- set
- 4 (R) Queue Modified Status (QMOD). If set a queued register has been
- written since the last accelerator operation was started.
- 6 (W32p rev B +) Accelerator Pipeline not empty.
- 7 (W32p rev B +) Accelerator Data Ready Status. If set data waiting
- for the host to read.
-
- M+38h W(R/W): ACL X Position Register (W32p only)
- bit 0-11 The accelerators current X position
- Note: this register is at offset 94h in the W32 and W32i
-
- M+3Ah W(R/W): ACL Y Position Register (W32p only)
- bit 0-11 The accelerators current Y position
- Note: this register is at offset 96h in the W32 and W32i
-
- M+80h D(R/W): ACL Pattern Address Register
- bit 0-21 The byte address in display memory of the Pattern Map
-
- M+84h D(R/W): ACL Source Address Register
- bit 0-21 The byte address in display memory of the Source Map
-
- M+88h W(R/W): ACL Pattern Y Offset Register
- bit 0-11 The number of bytes (-1) between lines in the pattern
-
- M+8Ah W(R/W): ACL Source Y Offset Register
- bit 0-11 The number of bytes (-1) between lines in the source
-
- M+8Ch W(R/W): ACL Destination Y Offset Register
- bit 0-11 The number of bytes (-1) between lines in the destination
-
- M+8Eh (R/W): ACL Virtual Bus Size Register (W32,W32i only)
- bit 0-1 Virtual Bus Size (VBS). When the host provides Source Map or Mix Map
- data this is the number of bytes handled at a time. The number of
- bytes transferred must be rounded up to an integral multiplum of
- this number. 0: 1byte, 1: 2bytes, 2: 4bytes
-
- M+8Eh (R/W): ACL Pixel Depth Register (W32p only)
- bit 0-? Pixel depth. 0: 1 byte per pixel, 1: 2 bytes per pixel
-
- M+8Fh (R/W): ACL X/Y Direction Register
- bit 0 X Direction. If set the accelerator moves from high to low addresses
- (right -> left), if clear from low to high (left -> right)
- 1 Y Direction. If set the accelerator moves from high to low addresses
- (down -> up), if clear from low to high (up -> down)
- 0-2 (W32p) Axial Direction for linedraw
- 4 (W32p) Line Draw Algorithm.
- 5 (W32p) LETQ Load Error Term. If set the internal Bresenham Error
- term is loaded from the ACL Error Term register (M+AAh) (used for
- clipping), if clear it is automatically calculated from the ACL
- Delta Major register (M+AEh) at the start of the line draw.
- 7 (W32p) Graphics Opcode. 0 for BitBLT, 1 for linedraw
-
- M+90h (R/W): ACL Pattern Wrap Register
- bit 0-2 Pattern X Wrap. The pattern Map will wrap back to the start when
- this number of bytes have been processed.
- 2: 4bytes, 3: 8bytes, 4: 16bytes, 5: 32bytes, 6: 64bytes, 7:never
- 4-6 Pattern Y Wrap. The pattern Map will wrap back to the start when
- this number of lines have been processed.
- 0: 1 line, 1: 2 lines, 2: 4 lines, 3: 8 lines, 7: never
-
- M+92h (R/W): ACL Source Wrap Register
- bit 0-2 Source X Wrap. The Source Map will wrap back to the start when
- this number of bytes have been processed.
- 2: 4bytes, 3: 8bytes, 4: 16bytes, 5: 32bytes, 6: 64bytes, 7:never
- 4-6 Source Y Wrap. The Source Map will wrap back to the start when
- this number of lines have been processed.
- 0: 1 line, 1: 2 lines, 2: 4 lines, 3: 8 lines, 7: never
-
- M+94h W(R/W): ACL X Position Register (W32,W32i only)
- bit 0-11 The accelerators current X position
- Note this register is at offset 38h in the W32p
-
- M+96h W(R/W): ACL Y Position Register (W32,W32i only)
- bit 0-11 The accelerators current Y position
- Note this register is at offset 3Ah in the W32p
-
- M+98h W(R/W): ACL X Count Register
- bit 0-11 The number of bytes (-1) in the blit area horizontally. For 15/16/24
- bpp modes the number of bytes is the number of pixels * 2/3/4
- depending on the mode.
-
- M+9Ah W(R/W): ACL Y Count Register
- bit 0-11 The number of lines (-1) in the blit area vertically
-
- M+9Ch (R/W): ACL Routing Control Register
- bit 0-2 Routing of CPU Data (DARO).
- 0: CPU data not used
- 1: CPU data is Source data
- 2: CPU data is Mix data
- 4: CPU data is X Count
- 5: CPU data is Y Count
- 3 (W32p) MixMap Enable (MXEN). If set mixed data is display data, if
- clear mixed data is 1. Only used if bits 0-2 are 0 or 1.
- 4-5 Routing of CPU Address (ADRO).
- 0: CPU address not used. Only the first write to an accelerated
- MMU Aperture is used as the destination address
- 1: CPU address is Destination address
- 6 (W32p) Routing of Accelerator data.
- 7 (W32p) Invalidate disable
-
- M+9Dh (R/W): ACL Reload Control Register
- bit 0 If set the resulting Source Address from the last operation is used
- as the new starting Source Address, if clear the address programmed
- in the ACL Source Address Register (M+84h).
- 1 If set the resulting Pattern Address from the last operation is used
- as the new starting Pattern Address, if clear the address programmed
- in the ACL Pattern Address Register (M+80h).
-
- M+9Eh (R/W): ACL Background Raster Operation Register
- bit 0-7 The Background Raster Operation
-
- M+9Fh (R/W): ACL Foreground Raster Operation Register
- bit 0-7 The Foreground Raster Operation
-
- M+A0h D(R/W): ACL Destination Address Register
- bit 0-21 The byte address in display memory of the Destination Map
- The Destination address can also be set by writing via a MMU
- Aperture with the APT bit set. Then the address (after MMU
- translation) is used as the Destination address and the Accelerator
- operation is started. Reading this register returns the accelerator
- internal Destination address
-
- M+A4h D(R): ACL Internal Pattern Address Register (W32,W32i only)
- bit 0-21 The accelerator internal Pattern Address
-
- M+A4h D(R): ACL Mix Address Register (W32p rev A & B only)
- bit 0-24 Address of the Mix map in display memory. The Mix map has one bit
- for each byte processed by any other map
-
- M+A8h D(R): ACL Internal Source Address Register (W32,W32i only)
- bit 0-21 The accelerator internal Source Address
-
- M+A8h W(R): ACL Mix Y Offset Register (W32p only)
- bit 0-11 Number of bits (-1) per scan line in the Mix map.
-
- M+AAh W(R): ACL Error Term Register (W32p only)
- bit 0-15 Bresenham linedraw error term. Only used if ACL X/Y Direction
- Register (M+8Fh) bit 5 is set. Usually this is automatically
- calculated from the ACL Delta Major register (M+AEh), however for
- restoring a suspended operation or for clipping of the line this
- register can be used for direct control.
-
- M+ACh W(R/W): ACL Delta Minor (W32p only)
- bit 0-? Bresenham linedraw length of the minor axis. min(abs(dX),abs(dY))
-
- M+AEh W(R/W): ACL Delta Major (W32p only)
- bit 0-? Bresenham linedraw length of the major axis. max(abs(dX),abs(dY))
- Where dX and dY are the distances in the X and Y directions.
-
-
- **** The PCI Interfece registers are only present on the W32p ****
-
- Byte 00h W(R): Vendor ID
- bit 0-15 100Ch for Tseng Labs
-
- Byte 02h W(R): Device ID
- bit 0-3 Revision ID. Same as 210Ah index ECh bits 4-7. Also same as Byte 8.
- 4-15 Device ID. 320h for all ET4000/W32p's
-
- Byte 04h W(R/W): Command Register
- bit 0 I/O Space. If set the device may respond to I/O accesses
- 1 Memory Space. If set the device may respond to memory accesses
- 2 Reserved(0)
- 3 Special cycles. If set the device is allowed to monitor special
- cycles
- 4 Reserved(0)
- 5 VGA Palette snoop. If set VGA palette snooping is enabled and the
- DAC can not respond to writes. If clear the DAC operates normally
- 6 Parity error. If set the device responds to parity errors, if clear
- they are ignored. Must be reset to 0. The device will (and must)
- generate parity even when parity errors are disabled.
- 7 Wait cycle control. If set address/data stepping is enabled
- 8 System error driver. If set the system error driver reports parity
- errors, if clear it is disconnected.
- 9 Reserved(0)
-
- Byte 06h W(R/W): Device Status Register
- bit 8 Bus Master
- 9-10 (R) Device Select Timing. Timing of DEVSEL#. 0: fast, 1: medium,
- 2: slow
- 11 Device Target-abort.
- Note: The bits are set when the corresponding event occurs, and are reset when
- a one (1) is written to the bit.
-
- Byte 08h (R): Revision ID
- bit 0-7 Revision ID. Same as 210Ah index ECh bits 4-7. Also same as Byte 2
- bits 0-3.
-
- Byte 09h 3(R): Class Code
- bit 0-23 30000h for a VGA compatible display controller
-
- Byte 10h D(R/W): Base Address Register
- bit 24-31 Selects the 16MB area where the Linear Aperture resides (A24-31 =
- these bits) when enabled.
-
- Byte 30h D(R/W): Expansion ROM Address
- bit 0 If set the ROM is enabled, if clear it is disabled
- 1-27 Reserved(0)
- 28-31 (rev A,B) Reserved (0)
- (rev C +) Selects the 256MB area where the ROM resides (A28-31 =
- these bits).
- Note: when bit 1-31 is 0 the ROM is at C0000h, else it is replicated every 32K
- within the 256MB area (if enabled).
-
- Byte 3Ch (R/W): Interrupt Line
- bit 0-3 (rev A) Reserved (all 1)
- (rev B +) Input to the system interrupt controller ??
- 4-7 (rev A,B) Reserved (all 1)
- (rev C +) Reserved (0)
-
- Byte 3Dh (R): Interrupt Pin
-
-
- Bank Switching:
-
- 64k banks are selected by the Segment Select Register at 3CDh.
- Both a Read and a Write segment can be selected.
- For the W32 series extra bank bits are in 3CBh
-
- Hardware Zoom (ET3000 Only).
-
- The ET3000 can zoom a part of display memory in a window.
- The display memory position and window position are selected by 3d4h index
- 1Bh to 21h.
-
-
- Identify Tseng Chipset:
-
- outp($3BF,3);
- outp($3D8,$A0); {Enable ET4000 extensions}
- if tstrg($3CD,$3F) then
- if testinx2(base,$33,$F) then
- if tstrg($3CB,$33) then
- case rdinx($217A,$EC) shr 4 of
- 0:Tseng ET4000W32
- 3:Tseng ET4000W32i
- 2:Tseng ET4000W32p {Not quite sure yet}
- end
- else Tseng 4000
- else Tseng 3000;
-
- Memory: (Tseng BIOS version 3.00 and up)
- 0:488h BYTE Bit 4 High bit of the 1024x768 mode flag
- 0: 87Hz interlaced, 1: 60Hz, 2: 72Hz, 3: 70Hz
- 5 High bit of 800x600 mode flag
- 0: 60Hz, 1: 56Hz, 2: 72Hz
- 6 If set 640x480 is 72Hz, else 60Hz
- 0:489h BYTE Bit 5 Low bit of the 1024x768 mode flag
- 6 Low bit of the 800x600 flag
-
-
-
- Video Modes:
- 8 T 132 25 2 (STB only)
- Ah T 132 44 2
- 18h T 132 44 4 (8x8) B000
- 19h T 132 25 4 (9x14) B000
- 1Ah T 132 28 4 (9x13) B000
- 22h T 132 44 16 (8x8)
- 23h T 132 25 16 (8x14)
- 24h T 132 28 16 (8x13)
- 25h G 640 480 16 planar
- 26h T 80 60 16 (8x8)
- 27h G 720 512 16 PL4 (Tseng recommended, few boards)
- 29h G 800 600 16 PL4
- 2Ah T 100 40 16 PL4
- 2Dh G 640 350 256 P8
- 2Eh G 640 480 256 P8
- 2Fh G 640 400 256 P8 (ET4000 Only)
- 2Fh G 720 512 256 P8 (Tseng recommended, few boards)
- 30h G 800 600 256 P8
- 36h G 960 720 16 PL4 (STB only)
- 37h G 1024 768 16 PL4
- 38h G 1024 768 256 P8 (ET4000 Only)
- 3Dh G 1280 1024 16 PL4 (newer ET4000s)
- 3Eh G 1280 960 16 PL4 (Definicon)
- 3Fh G 1280 1024 256 P8
- 6Ah G 800 600 16 PL4 Newer ET4000s
-
- BIOS extensions (Tseng 4000 Sierra HiColor DAC):
-
- ----------1010E0-----------------------------
- INT 10 - VIDEO - SpeedStar 24 - Set TrueColor Graphics Mode
- AX = 10E0h
- BL = 2Eh
- Return: AX = 0010h if successful
- other on error
- Enters 24bit 640x480 mode if SS24 DAC present.
- Video memory is NOT cleared.
- Each line uses 2048 bytes with only 640x3=1920 bytes actually used.
- So that a line can never cross a 64K border.
- ----------1010F0-----------------------------
- INT 10 - VIDEO - Tseng ET-4000 BIOS - Set HiColor Graphics Mode
- AX = 10F0h
- BL = video mode (see also AH=00h)
- 32768-color modes:
- 13h = 320x200
- 2Dh = 640x350
- 2Eh = 640x480
- 2Fh = 640x400
- 30h = 800x600
- 38h = 1024x768
- 16M color modes:
- 3Eh = 640x480 (Genoa 7900)
- BX = 2DFFh = 640x350 (MEGAVGA/2)
- 2EFFh = 640x480 (MEGAVGA/2)
- 2FFFh = 640x400 (MEGAVGA/2)
- Return: AX = 0010h if successful
- other on error
- ----------1010F1-----------------------------
- INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
- AX = 10F1h
- Return: AX = 0010h if successful, errorcode if not
- BL = type of digital/analog converter
- 00h normal VGA DAC
- 01h Sierra SC11481/6/8 HiColor DAC
-
- (Diamond SpeedStar 24:)
- 02h SS24 DAC (MUSIC MU9c1880)
-
- (Tseng generic BIOS rev 8.00 or later:)
- 02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
- 03h ATT20c490/1/2 & Winbond 490/491 15/16/24 bit HiColor DAC
- 04h AcuMos ADAC1 & CL-GD5200 (15/16/24 bit)
- 05h Sierra SC15025/26 (15/16/24 bit DAC)
- 06h Cirrus Internal 15/16/24 bit DAC (from CL-GD54xx series).
- 07h Diamond SS2410 & MUSIC MU9C1880. (15/16/24 bit).
- 08h Music MU9c4910/9910 (15/16/24 bit DAC).
- 09h Brooktree Bt481/482
- 20h SGS-Thompson STG1700
- 21h SC15021
- 22h AT&T 20c498
- 23h ICS 5340/5341
- 24h STG1702/3
- 25h Chrontel CH8398
- ----------1010F2-----------------------------
- INT 10 - VIDEO - Tseng ET-4000 BIOS - GET/SET HiColor MODE
- AX = 10F2h
- BL = 00h Get current HiColor mode
- 01h Set 15bit HiColor mode
- 02h Set 16bit HiColor mode
- Return: AX = 0010h if successful, errorcode if not
- BL = Current HiColor mode:
- 00h Not in HiColor mode or not a HiColor DAC
- 01h 15-bit RGB mode
- 02h 16-bit RGB mode
- 03h 24-bit RGB mode
- Note: Set HiColor mode (BL=1 or 2) only works if already in some HiColor mode.
- ----------101D-------------------------------
- INT 10 - VIDEO - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
- AH = 1Dh
- AL = Video Mode
- ES = Caller's segment
- Note: The caller's segment contains a table at offset 5Ch or 100h
- Offset Size Description
- 00h 9 BYTEs ID string 'ey5CENTER'
- 09h 5 BYTEs sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
- 0Eh 5 BYTEs sync parameters for 800x600 modes 29h,30h,2Ah
- 13h 5 BYTEs sync parameters for 1024x768 modes 37h, 38h
- ----------101DAA-----------------------------
- INT 10 - VIDEO - Diamond SpeedSTAR - CHECK FOR SPEEDSTAR
- AX = 1DAAh
- BX = FDECh
- Return: BX = DECFh if found
- AL = AH = DACtype:
- 00h Standard VGA DAC
- 01h Highcolor DAC with command bit 3 not writable
- (Sierra "Mark 1" - SC11481/6/8)
- 02h SS2410 DAC
- 05h Highcolor DAC with command bit 3 writable (Sierra
- "Mark 2/3" - SC11482/3/4/5/7/9)
- SI:DI -> BIOS version & Copyright string
-
-
-
-
- Notes:
- The sequence:
-
- port[$3BF]:=3;
- port[$3D8]:=$A0;
-
- is needed to enable the extensions in the Tseng 3000/4000.
- Most BIOSes do this by default, but some such as the Sigma VGA Legend
- requires this sequence.
-